package com.xiaoxi.userserver.service.menu;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xiaoxi.common.exception.BMSException;
import com.xiaoxi.domain.menu.BMSMenu;
import com.xiaoxi.userserver.domain.vo.menu.BMSMenuTree;
import com.xiaoxi.userserver.domain.vo.menu.BMSMenuVO;
import com.xiaoxi.userserver.domain.vo.menu.BMSUserMenuTree;


import java.util.List;

/**
 * @author xiaoxi
 * @version 1.0
 * @date 2022/6/1 18:55
 */
public interface BMSMenuService extends IService<BMSMenu> {

    /**
     * 检查一批菜单编号 是否存在
     *
     * @param menuIds
     * @return
     */
    Boolean checkMenuIdListValid(List<Long> menuIds);

    /**
     * 生成菜单树，提供给异步路由选择
     *
     * @return
     */
    List<BMSMenuTree> getMenuTree();

    /**
     * 更新菜单
     *
     * @param bmsMenuVO
     */
    void updateMenu(BMSMenuVO bmsMenuVO) throws BMSException;

    /**
     * 创建菜单
     *
     * @param bmsMenuVO
     */
    void createMenu(BMSMenuVO bmsMenuVO) throws BMSException;

    /**
     * 通过编号找到菜单
     *
     * @param id
     * @return
     */
    BMSMenuVO findByOne(Long id);


    /**
     * 删除菜单
     *
     * @param id
     */
    void deleteMenuById(Long id);

    /**
     * 校验路由名称是否重复
     *
     * @param routeName
     * @param id
     * @return
     */
    Boolean checkRouteName(String routeName, Long id);

    /**
     * 校验路由对应标题名称是否重复
     *
     * @param titleName
     * @param id
     * @return
     */
    Boolean checkTitleName(String titleName, Long id);


    /**
     * 获取用户对应的菜单树
     *
     * @return
     */
    List<BMSUserMenuTree> getUserMenuTree();

}
